home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-02 | 60.6 KB | 1,386 lines |
- NEW-TDE - Modified by Angelo Besani for SWEET Technologies
-
-
-
- TDE, the Thomson-Davis Editor
- Version 2.10
- November 13, 1992
- Frank Davis
-
-
- Description:
-
- TDE is a simple, public domain, multi-file/multi-window text editor
- written for IBM PCs and close compatibles. TDE is suitable for editing
- batch files, text files, and various computer language source code
- files. The only limit on the number and size of files that TDE can
- handle is the amount of conventional memory. Likewise, the only limit
- on the number of windows is the amount of conventional memory. There is
- no preset maximum number of files or windows that may be open at any one
- time.
-
-
- Introduction:
-
- I work with data files, computer source code, and output files quite a
- bit. Most of the features in TDE are related, in some way, to handling
- those types of files. The various window and cursor commands in TDE are
- really nice for comparing and editing source code or output files. A
- good collection of block commands is available for use on source code
- and formatted data files. For what little word processing I do, TDE has
- a few simple commands for formatting text and paragraphs. In short, TDE
- contains most of the features that I use most of the time in an easy to
- use, easy to remember, and easy to configure editor. I hope you find
- TDE as easy to use for most of your routine editing as me.
-
-
- Usage:
-
- At the command line type:
-
- tde [ [-f search_pattern] file name(s)]
-
- For example:
-
- tde
- tde foo.bar
- tde c:\c60\TDE\main.c
- tde *.c \qc25\TDE\*.h
- tde foo.bar foobar f* foo.* f??b??
-
- * * * to search files for a pattern and load matches * * *
-
- tde -f find_me_load_me foo.*
- tde -f find_me_load_me foo.* *.bar
-
-
- If you don't enter a file name at the command line, TDE will prompt you
- for a file name. If the file does not exist, TDE starts out with an
- empty file with the file name you just entered.
-
- TDE will handle files as large 440k. If you try to edit a file larger
- than 440k, only the first portion of the file is loaded into TDE. With
- DOS 5.0, you can edit files as large as 485k if you load DOS high. TDE
- will handle lines as long as 1040 characters. Only the first 1040
- characters of long lines are handled.
-
-
- Oops, 2.1 has a booboo.
-
- With tabs inflated, the STREAM block function did not handle some block
- operations correctly. Version 2.10 corrects that error.
-
- While I was under the hood, I modified the find functions. Now,
- finding a string is even faster. See findrep.c for details.
-
-
- What's new:
-
-
- New features in TDE 2.1 include:
-
- SetLtabs = ^Tab
- SetPtabs = ^Tab, prompts for both Ltabs and Ptabs
- BlockCompressTabs = #@C
- BlockIndentTabs = #@I
- ToggleTabInflate = #@T
- DefineDiff = #F7
- RepeatDiff = F7
- -f pattern files = command line option to define S&S
- DefineSearchAndSeize = #F12
- RepeatSearchAndSeize = F12
- SwapBlock = #@S
- Sort sequence = Config file
-
-
- Renamed functions:
-
- ReplaceString == ReplaceForward || ReplaceBackward
- PanUp == FixedScrollUP
- PanDown == FixedScrollDn
- PanLeft == ScrollLeft
- PanRight == ScrollRight
-
-
- The new tab functions that make TDE more "standard" are ltabs, ptabs,
- and TabInflate. Logical tabs define the tab stops on the screen.
- Physical tabs are the actual tab characters embedded in text. The most
- common setting for physical tabs is 8. The setting for logical tabs
- varies greatly depending on personal taste. Indentation styles also
- vary with personal taste. An easy way to change one indentation style
- to another is to compress leading space to physical tabs. Then, the
- physical tab width may changed to the desired indentation style and
- expanded. Displaying tabs without physically expanding them is called
- TabInflate in TDE. TabInflate treats tab characters on the screen as
- space. To give you an idea of tab positions, the display EOL function
- (Control-F2) displays inflated tab positions.
-
- At work, we may have several versions of one program. For me, I find it
- hard to remember which changes were made to which source files. There
- are several diff utilities that can point out differences, but I
- probably need the edit those differences anyway. The diff options I
- find most useful are: setting the diff start, ignore leading space,
- ignore all space, and ignore blank lines. A non-standard diff option
- that appeals to writers is ignore end of line, because diffing a
- paragraph with only margin changes will produce no diffs. The new diff
- function in TDE prompts for the windows and the starting diff options.
- Once the diff is defined, press the RepeatDiff key at any time to find
- the next diff. With cursor sync turned on, it's easy to move the
- cursors to begin the next diff. Any two visible windows may be diffed.
- You may even diff windows in the same file, which is really nice for
- comparing similar functions, data, or text in separate areas of a file.
-
- After using the EditNextFile function (Alt-F4) for a while, it seemed to
- lack a very useful feature. The reason I use EditNextFile is to search
- files for a common blocks, structures, strings, etc... Being that TDE
- has a find function, might as well let TDE search and load files that
- have the matching string. When testing the new function, I found my
- ownself needing a command line "Search and Seize" and a function key
- "Search and Seize." Just give SearchAndSeize a pattern to search for
- and the files you want to search. SearchAndSeize will load only those
- files that contain the search pattern. S&S turned out really nice.
- On my system, S&S can search 10 100K files (10 x 100k = 1 Megabyte) in
- 10 seconds. Your mileage may vary.
-
- I can't speak, read, or write English too very good and I can't speak
- any other language at all. So, I felt qualified to add sort sequences
- for non-English languages: English, Esperanto, Finnish, French, German,
- and Swedish. You may customize the sort sequence in tde.cfg. Actually,
- Pierre Jelenc sent in the sort sequences for those languages. I
- probably messed them up, so if the sort sequences don't do right then
- blame me. Examples of the sort sequences are at the bottom of the
- config file. Incidentally, Pierre is developing a general purpose,
- language independent sort program. Pierre's sort program will handle a
- much wider range of alphabets and languages than TDE.
-
- The new SwapBlock function works only with BOX blocks. Every once in a
- while, I need to swap rows of numbers or areas of text. The width of
- the swap area assumed to be the width of the BOX.
-
-
- New features in TDE 2.0e include:
-
- BlockRot13 = #@<
- BlockFixUUE = #@>
- BlockEmailReply = #@?
-
- ROT13 is an informal, voluntary standard used on the networks to send
- text that some may consider inappropriate. ROT13 is a convenient way
- that allows one to choose whether or not to read the material. To read
- the material, one has to make a conscious and deliberate effort to
- convert the text into a readable form. ROT13 is also used to hide
- answers to questions, puzzles, etc... BlockRot13 alternately converts
- ROT13 alpha characters into normal text and hides normal alpha
- characters in ROT13.
-
- The most common default for sending large binary files across network
- nodes and gateways uses UUencoding; however, some characters in the
- UUencode set do not make the trip correctly. On IBM mainframes, the
- EBCDIC to ASCII translation don't do right. Although I don't fully
- understand why, but, three characters need to be fixed when receiving
- text e-mail files, which include UUencoded files, from IBM mainframes.
- BlockFixUUE will fix the three characters in a marked block. The three
- characters that need to be fixed in text (as opposed to binary) e-mail
- files received from IBM mainframes are:
-
- Hex Decimal ASCII
-
- 1) 5d ==> 7c 93 ==> 124 ] ==> |
- 2) d5 ==> 5b 223 ==> 91 ╒ ==> [
- 3) e5 ==> 5d 229 ==> 93 σ ==> ]
-
-
- When sending a reply to an e-mail, it is customary to prepend any lines
- from the original e-mail with the ">" character. BlockEmailReply
- prepends "> " to the original line in an e-mail and prepends ">" to all
- replies to replies in a LINE block.
-
-
-
- New features in TDE 2.0 include :
-
- DateTimeStamp = ^2 or Control-@ sign
- SortBoxBlock, ascending or descending = @S
- ToggleSmartTabs = @Tab
- Dynamic left margin for writers = @V
- Pause, useful with macros = ^P
- Recursive macros
- Support for Control-Break to stop recursive macros,
- sorting, search/replacing, some block operations,
- formatting text or paragraph, and printing.
- Support for lines as long as 1040 characters.
- Improved undo buffer management. There is now room for
- the last 10 by 1040 or 130 by 80 deleted lines.
- Gathered all prompts into one header file to aid translation
- of prompts and documentation into other languages.
- Configuration file, option 6 in tdecfg.exe.
-
-
- The date-time stamp was added to TDE because some users talk with field
- units over the phone and the event needs to be date and time stamped.
- Users may customize the date to local preferences, eg MM-DD-YY or
- DD-MM-YY. The time stamp may use either 12 hour or 24 hour form.
-
- Every once in a while, I need to sort data, names, etc..., in some of my
- files. The SortBoxBlock function was added to sort lines according to
- the keys in a box block. The keys may be sorted ascending or
- descending, while the IGNORE/MATCH toggle determines whether case is
- significant. To sort multiple columns, start the sort with the least
- significant key first.
-
- I also wrote a handler for the Control-Break interrupt, 0x1B. On IBM
- compatible PCs, the Control-Break key generates an interrupt via
- hardware. By writing a Control-Break interrupt handler, a user can
- immediately gain control of a run-a-way recursive macro, printing job,
- most box block operations, expanding tabs, trimming space from line
- blocks, formatting a paragraph or text, search/replace, or a sort
- operation. Although one may trap Control-C, which is a software
- generated interrupt, there is no telling when the operating system will
- turn control over to a Control-C handler. One may gain immediate
- control with the Control-Break key, however.
-
- The undo-buffer space and management was greatly enhanced. There is now
- room for over 10k of deleted text in the buffer. Users may now get back
- entire functions that may have been deleted. There is room for 130 by
- 80 or 10 by 1040 character lines in the new undelete buffer.
-
- All of the prompts in TDE were gathered into one header file to aid the
- translation of documentation as well as the user prompts into other
- languages. Pierre Jelenc, pcj1@cunixf.cc.columbia.edu and a member of
- the Foreign Language Education Forum (FLEFO) on CompuServe, has
- translated the documentation and has created configuration files for
- several languages. If you need a non-English version of TDE, contact
- Pierre to find out if he has a version of TDE for you.
-
- A configuration file was added so that users may define all function
- keys, modes, and colors from a configuration file. Users may also
- define macros in the configuration file. Those who need to assign ASCII
- and Extended ASCII character to unused function keys will find this
- extremely useful. Some alphabets need letters with all kinds of accent
- marks.
-
-
- New features in TDE 1.5 include :
-
- Ruler = @R
- Block trim trailing = @T
- User defined macros:
- Record macro = @F3
- Save macros to file = #F1
- Load macros from file = #F3
- Clear macro buffer = ^ESC
- Critical error handler
-
- If by accident you forget to put a diskette in a floppy drive and try to
- save a file or if you forget to turn on the printer before printing a
- block or file, a critical error occurs. That kind of error is the
- infamous Abort, Retry, Ignore thing. A routine was written to give some
- information on the kind and the location of those errors when they
- occur. The TDE critical error handler gives you all kinds of info and
- then prompts you for a response. The timeout for critical errors varies
- quite a bit. Some timeouts may take a couple of minutes.
-
- When I "work" at the USDA, I often need to create or massage formatted
- data files. Also, a lot of engineers and scientists at the USDA program
- in FORTRAN and the source code needs to be in a certain format. When
- working with those types of files, it is really useful to have a ruler
- that explicitly shows which column the cursor is in. The new ruler in
- TDE shows margins, column numbers, and a column pointer.
-
-
-
- New features in TDE 1.4 include :
-
- Split screen vertically = F8
- Number box block = Alt+N
- Directory list = Alt+F1
-
- Also added in tdecfg was a choice of cursor styles and a switch for .bak
- files. Both of those options are in the mode section of tdecfg.
-
-
-
- <CR><LF> or <LF> at eol
-
- The functions that write files were expanded to allow you to choose
- whether you want to write a <CR><LF> or just a <LF> at the end of line.
- Some programs look for just the <LF> at the eol while others want the
- <CR><LF> pair at the eol. TDE has no trouble reading either style but
- allows you to specify the output style. You may change the style by
- pressing the ToggleCRLF function key or by using tdecfg to set the
- default. Here's a little diagram that may help explain the new
- functions better than I can write.
-
-
- Output
- Input TDE's internal representation Toggle
-
- files ┌────────────────────────────┐ files
- with │ tde will read files with │ with
- <CR><LF> ====>│ lines that terminate in │ =====> <CR><LF>
- at eol │ either <CR><LF> or <LF>. │ at eol
- │ │
- │ │
- files │ Internally, all lines end │ files
- with │ with the <LF> character. │ with
- <LF> =====>│ │ =====> <LF>
- at eol └────────────────────────────┘ at eol
-
-
-
-
- Editor fields and information lines:
-
-
- Sample TDE screen
-
-
- ┌─── File number - each window opened to same file has same number
- │ ┌─── Window letter
- │ │
- │ │ ┌─── Dirty file indicater - asterisk
- │ │ │ ┌─── File name
- │ │ │ │ ┌──── File attributes
- │ │ │ │ │ ┌──── Total number of lines in file
- │ │ │ │ │ │ ┌─── line:column
-
- ┌──────────────────────────────────────────────────────────────┐
- │ The first line on the screen contains file information │
- ├──────────────────────────────────────────────────────────────┤
- │........1..... Optional ruler line ......7........8│
- ├──────────────────────────────────────────────────────────────┤
- │ │
- │ │
- │ File area │
- │ │
- │ │
- │ │
- ├──────────────────────────────────────────────────────────────┤
- │ Editor modes and information │
- └──────────────────────────────────────────────────────────────┘
- Insert
- │ │ │ │ │ │ │ │ │ │ │ └─ Overwrite
- │ │ │ │ │ │ │ │ │ │ └───── ^Z at eof?
- │ │ │ │ │ │ │ │ │ └───── trim trailing
- │ │ │ │ │ │ │ │ │ space at eol, T = TRUE
- │ │ │ │ │ │ │ │ │
- │ │ │ │ │ │ │ │ └───── CRLF or LF at eol?
- │ │ │ │ │ │ │ └───── word wrap indicator
- │ │ │ │ │ │ └───── Sync cursor in all windows?
- │ │ │ │ │ └───── Ignore / Match search case?
- │ │ │ │ └───── Indent mode?
- │ │ │ └───── Tab modes = Smart/Fixed, In/Deflate, and ptabs
- │ │ └───── Available memory for editing files
- │ └───── Total number of windows, including hidden windows
- └───── Total number of open files
-
-
-
- Multiple keys:
-
- I use the following abbreviated key definitions throughout this file:
-
- ^ = Control # = Shift @ = Alt
-
- For example, ^F5 means press and hold the Control key and then press F5
- while holding down the Control key.
-
-
- Cursor movement:
-
- 101 Keyboard overview
-
- Cursor keys Keypad keys
- ┌─────┬─────┬─────┐ ┌───────┬───────┬───────┬───────┐
- │ Ins │Home │PgUp │ │NumLock│Grey / │Grey * │Grey - │
- ├─────┼─────┼─────┤ ├───────┼───────┼───────┼───────┤
- │ Del │ End │PgDn │ │ Home │ Up │ Pg Up │ Grey │
- └─────┴─────┴─────┘ ├───────┼───────┼───────┤ + │
- │ Left │Center │ Right │ │
- ┌─────┐ ├───────┼───────┼───────┼───────┤
- │ Up │ │ End │ Down │ Pg Dn │ Grey │
- ┌─────┼─────┼─────┐ ├───────┴───────┼───────┤ │
- │Left │Down │Right│ │ Ins │ Del │ Enter │
- └─────┴─────┴─────┘ └───────────────┴───────┴───────┘
-
-
- If you like using these grey With Num Lock off,
- cursor keys, these function you can probably guess most
- assignments are for you. of these function assignments.
-
- Grey cursor keys Keypad keys
-
- Up - move cursor up Home - toggle col 1 & beg of line
- Down - move cursor down ^Home - first line in window
- Left - move cursor left Pg Up - page up
- Right - move cursor right ^Pg Up - goto first page in file
- ^Up - scroll cursor up Center - move to center of window
- ^Down - scroll cursor down ^Center - line to center of window
- ^Left - cursor to previous word End - last character in line
- ^Right - cursor to next word ^End - last line in window
- @Up - pan up Pg Dn - page down
- @Down - pan down ^Pg Dn - goto last page in file
- @Left - pan left Ins - toggle insert mode
- @Right - pan right Del - delete character
- @PgUp - horizontal page left ^Del - stream delete character
- @PgDn - horizontal page right Grey - - scroll screen up
- ^#Left - pan left Grey + - scroll screen down
- ^#Right - pan right ^Grey - - pan up
- ^Grey + - pan down
- Enter - Insert line and move down
- #Enter - 1st char in next line
- ^Enter - column 1 in next line
-
-
- Function Keys:
-
- I tried to use some logical order when I assigned functions to the
- function keys. I use a 101 keyboard most of the time, so it should be
- easy to see the logical function grouping with it. The function keys
- on a 101 keyboard are placed along the top of the keyboard. Functions
- are arranged as follows:
-
-
- Help File Find/Replace Window
- Functions & Diff Commands
- F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
-
-
- F1 = Instantaneous Help
-
- @F1 = Directory List
- List the contents of a directory or matching files. At the
- prompt, press enter to list all files in the current directory or
- enter any valid subdirectory name, file name, or wild card
- characters. You don't have to put a *.* at the end of a
- subdirectory name; the directory list function adds those wild
- card characters to subdirectory names as a default. A '\' is
- added to the end of subdirectory names in the file list. To list
- files in other directories, just move the cursor to the desired
- subdirectory name and press enter. When you see ..\ in the
- directory list, the double periods represent the parent of the
- current directory. The .\ represents the current directory. You
- may move up and down the directory tree by selecting the parent or
- childrens of the current directory.
-
-
- File Functions:
-
- F2 = Save file
- Saves all changes made to file. Existing file is overwritten by
- the new file. It does not prompt for a new file name -
- automatically assumes you want to overwrite the old file.
-
- F3 = Quit file
- Abandons any changes made in the file and closes or kicks the file
- out of the current window. If you are editing multiple files or
- have multiple windows, TDE searches for any invisible files to
- display in the current window. If no invisible windows are found,
- TDE combines windows. If this is the only file being edited, F3
- quits TDE. If you made any changes to the file, it asks you if
- you want to abandon them. You can create an invisible window when
- you load in a file over the current file. Nothing happens to the
- invisible file or window - you just can't see it.
-
- When I added vertical windows, this routine became a LOT more
- complicated. To keep things reasonably sane, let's only close
- windows that have three common edges, eg.
-
- ┌──────┬──────────┐
- │ │ no │
- │ ├─────┬────┤
- │ │yes1 │yes1│
- │ no ├─────┴────┤
- │ │ yes2 │
- │ ├──────────┤
- │ │ yes2 │
- └──────┴──────────┘
-
- Windows with 'no' cannot be closed. Windows with 'yes' can be
- combined with windows that have the same yes number.
-
-
- F4 = File (save and quit)
- This function is a combination of Save and Quit (F2 & F3 above).
-
- #F2 = Save as
- If you don't want to overwrite the original file but you want to
- save the contents of the current file, you may save the file under
- a different file name. This function prompts you for a file name
- to save the changes (press escape to abort).
-
- #F4 = Edit new file
- To bring another file into the editor, use this function. It
- loads the file into the current window and previous window becomes
- invisible. You can even load several copies of the same file. I
- like this because I often need to refer back to the original
- unchanged file on disk. When I make a booboo in a file, which is
- quite often, I don't necessarily want to quit and start over; I
- just want to get back the part that I messed up. It is really
- easy to mark the orginal text in a block and copy it to the place
- where I made a booboo. Each time a file is loaded into TDE, it is
- treated as a different file.
-
- @F2 = Set file attributes
- Change the attributes of a file. Attributes are: A = Archive,
- S = System, H = Hidden, R = Read-Only. You can change the
- attributes of a file so that read-only files can be edited. To
- edit a read-only file: 1) edit the file, 2) change the file
- attributes to archive, 3) save the changes made in the file, 4)
- change the file attributes back to read-only.
-
- @F4 = Edit next file
- If you type multiple file names or type wildcard characters on the
- command line, press this key to bring in the next file or the next
- matching file into the editor.
-
- -f pattern file(s) (Command line DefineSearchAndSeize)
- or
- #F12 = DefineSearchAndSeize
- Search and Seize will search files for a pattern and only load
- those files that contain pattern. The command line Define Search
- and Seize works a little differently than the function key S&S.
- On the command line, spaces are interpretted by DOS as delimiters.
- Therefore, the search pattern on the command line can not have
- any embedded spaces. On the other hand, the Fkey S&S search
- pattern may contain most any character.
-
- Defining S&S also defines the search pattern. When a file is
- loaded, press RepeatFind to go to the next occurence of pattern.
- There are actually two find structures - one for the standard
- search function and one for S&S. Defining S&S also defines
- the search function. However, redefining the standard search
- structure has no effect on the S&S pattern. The S&S pattern
- remains defined until another S&S redefines it.
-
- F12 = RepeatSearchAndSeize
- After S&S has been defined, press this key to seize the next file
- for pattern.
-
-
- Macros:
-
- @F3 = Macro record
- This key toggles macro record off and on. A flashing "Recording"
- is displayed in the lite bar, so it shouldn't be too difficult to
- tell when record is on. This function assigns a keystroke or a
- series of keystrokes to an unused function key. Keystrokes are
- played back for some prompts. Prompts that require the user to
- input a name or pattern are played back. Prompts that require the
- user to enter a choice, "Overwrite existing file (y/n)?" for
- example, are not played back.
-
- There is room for 1024 keystrokes in the macro buffer. There are
- no restrictions on the length of a single macro. If you want, you
- may define one macro that contains 1024 keystrokes. When TDE
- terminates, all macros definitions disappear. Macro definitions
- are temporary. If you want to reuse macros that are defined
- during an editing session, they need to be saved before you exit
- TDE.
-
- Recursive Macros
-
- "Recursive" macros are supported. Only one level of recursion is
- supported in TDE. Here's a simple example of a recursive macro:
-
- Alt-F3 = turn macro record on
- Alt-5 = assign the recording to Alt-5
- Down = move cursor down a line
- Alt-5 = call the macro we just defined
- Alt-F3 = turn macro record off
-
- Enter this macro and press Alt-5 to see what a recursive macro
- does. Recursive macros repeatedly execute themselves until an
- error condition occurs, which usually happens when the end of file
- is reached. I often use recursive macros to delete certain lines
- in a file or to rearrange the fields of a formatted data file.
-
- Each editor function in TDE returns a code to the macro processor
- that indicates whether or not an error occured. Here are some
- conditions that generate an error: attempting to move the cursor
- past the end of file or behind the start of the file, trying to
- add too many characters in a line, attempting block operations
- with no marked block, etc...
-
- One interesting phenomenon about recursive macros is that a macro
- can be defined that never terminates. The simplest
- non-terminating macro definition in TDE is:
-
- Alt-F3 = turn macro record on
- Alt-7 = assign the recording to Alt-7
- Alt-7 = call the macro we just defined
- Alt-F3 = turn macro record off
-
- This a+7 macro carries out no instructions. The only thing this
- macro does is call itself. In a perfect world, this macro will
- execute forever. There are lots of ways to create non-terminating
- recursive macros. Be creative and try creating a few non-
- terminating recursive macros yourself. With several different
- sizes and shapes of horizontal and vertical windows on the screen
- and with cursor sync toggled on, you can create some really neat
- macros using cursor movement keys. If you get tired of waiting
- for forever, just press Control-Break to stop any macro.
-
- A Really Neat Recursive Macro
-
- Here's a really neat recursive macro that you might try with
- cursor sync turned off. Edit a fairly large file, one with at
- least a 1000 lines, and move the cursor to line 500 or the half
- way point. Then, split the screen into several vertical windows
- with about 15 columns in each window , e.g.:
-
- ┌───────┬───────┬────────┬───────┬───────┐
- │ │ │ │ │ │
- │ │ │ │ │ │
- │ │ │ │ │ │
- │ │ │ start │ │ │
- │ │ │ │ │ │
- │ │ │ │ │ │
- │ │ │ │ │ │
- └───────┴───────┴────────┴───────┴───────┘
-
- With cursor sync turned off and macro record turned on, define a
- macro that 1) moves the cursor down in one window, 2) goes to the
- next window and moves the cursor up, 3) goes to the next window
- and moves the cursor down, 4) when the cursor finally makes it
- back to the starting window, make the macro recursive. Suppose
- the cursor is in the window labeled "start" in the sample screen
- above. Here's the way the keystrokes in this macro would be
- recorded:
-
-
- Alt-F3 = turn macro record on
- Alt-8 = assign this macro to Alt-8
- Down = move cursor down in "start" window
- F10 = next window
- Up = move cursor up
- F10 = next window
- Down = move cursor down
- F10 = next window
- Down = move cursor down
- F10 = next window
- Up = move cursor up
- F10 = next window - cursor is now in "start"
- Alt-8 = call the macro just defined. it's now recursive.
- Alt-F3 = turn macro record off
-
- Press Alt-8 and watch a really neat recursive macro.
-
-
- #F1 = Save macro file
- Saves all macro definitions to a file. TDE prompts for the macro
- file name.
-
- #F3 = Load macro file
- Prompts for a search pattern or file name. I can never remember
- macro file or path names, so this function uses a file pick list.
-
- ^ESC = Clear macros
- Resets or clears all macros.
-
- ^P = Pause
- When this function is part of a macro, press any key to continue
- the macro or press ESC to halt or break the macro.
-
-
- Find and Search/Replace:
-
- TDE uses the Boyer-Moore search algorithm for finding strings. Typically,
- the longer the search pattern the faster the search. So, if you want to
- speed up searches, try searching for longer patterns, e.g. phrases.
-
- ^F5 = Toggle search case
- You can toggle the case of the search flag at any time, even
- after you define the search pattern.
-
- #F5 = find forward
- To define the search pattern, use this function. It prompts you
- for the search pattern. The pattern is defined, across files,
- until changed.
-
- #F6 = find backward
- Same as find forward except search backward in file.
-
- F5 = Repeat find forward
- Once the search pattern has been defined (Shift F5 or Shift F6),
- you can press this key at any time in any file to find the next
- occurrence of pattern. I decided to use two sets of functions to
- perform searches. Once I found a pattern, I might do some editing
- and then find the next occurrence. I hate to define the search
- pattern over and over or set the search direction over and over.
- This function does a wrap search - when it reaches the eof it
- starts over at the beginning of the file.
-
- F6 = Repeat find backward
- Like repeat find forward, you can press this key at anytime once
- the search pattern has been defined.
-
- @F5 = Repeat find forward2
- Like F5 except the cursor is not repositioned to the middle of the
- screen. This function is useful when working with data files.
-
- @F6 = Repeat find backward2
- Like F6 except the cursor is not repositioned to the middle of the
- screen.
-
- #F8 = Replace String
- This function prompts you for the search pattern and the
- replacement text. It aIso prompts for the replace direction. If
- you want to match the search case, remember to toggle the search
- flag, which can be done at any time. You can either do prompt or
- no prompt replacing. Regardless of prompt or no prompt
- replacing, this function actually moves the cursor to the pattern
- and displays it on the screen and replaces the text. If you are
- using TDE on a slow machine, you can see the search/replace taking
- place. I implemented the function this way because I just like to
- see what the search/replace function is doing. Press
- Control-Break to stop no prompt replacing.
-
-
- Diff Functions:
-
- #F7 = DefineDiff
- This function initializes diff. It prompts for the window number
- and letter to diff, ignore leading space, ignore all space, ignore
- blank lines, ignore case, and ignore end of line. Any two windows
- may be diffed. Diff only requires that the windows be visible.
-
- Diff prompts
-
- DIFF: Enter first window number and letter (e.g. 1a) :
- DIFF: Enter next window number and letter (e.g. 2a) :
- DIFF: Start diff at (B)eginning of file or (C)urrent position? (b/c)
- DIFF: Ignore leading spaces (y/n)?
- DIFF: Ignore all space (y/n)?
- DIFF: Ignore blank lines (y/n)?
- DIFF: Ignore end of line (useful with reformatted paragraphs) (y/n)?
-
- F7 = RepeatDiff
- Once the diff has been defined, press RepeatDiff to find the next
- diff.
-
-
- Window Functions:
-
- F8 = Split window vertically
- Splits the screen at the current cursor location. The current
- file is displayed in multiple windows. Changes to a file are
- echoed in all windows opened to the same copy of that file. You
- can also see any marked blocks in the same copy of the file in
- different windows. There has to be at least 15 columns in any
- window, so the number of visible windows is limited by the display
- screen.
-
- F9 = Split window horizontally
- Splits the screen at the current cursor location. There has to be
- at least 1 text line in any window, so the number of visible
- windows is limited by the display screen.
-
- #F9 = Resize window
- Sometimes there is a need to concentrate on the contents of one
- window. Use the up and down arrow keys to adjust the current
- window to desired size. Changing the size of the top window is
- not allowed.
-
- ^F9 = Zoom window
- Makes the current window fill the whole screen. All windows
- except the current window become invisible.
-
- F10 = Next window
- If more than one window is displayed, you can press one key to
- move to the next window.
-
- #F10 = Previous window
- Move to previous window - opposite of next window.
-
- ^F10 = Next Hidden Window
- Displays "hidden" or "invisible" windows in the same place as the
- current window. The current window then becomes invisible.
-
-
- Block Commands:
-
- Block operations can be done within or between files. Operations on
- line blocks that move text are carried out on the line immediately
- below the cursor. Operations on box or stream blocks that move text
- begin at the column of the cursor. Press Control-Break to stop most Box
- operations. Nearly all Line and Stream operations happen so fast that
- you can't stop them once they are started.
-
- @B - Mark Box Block
- This key is used to mark both the beginning and ending corner of
- a box block.
-
- @L - Mark Line Block
- This key is similar to the operation of the box block, but entire
- lines are marked.
-
- @X - Mark Stream Block
- All the text between the beginning and ending column, sorta like a
- stream of characters, is marked. Useful with sentences.
-
- @U - Unmark Block
- If you make a booboo when marking blocks, press @U to unmark the
- block and start over. After certain block operations, the block
- may remain marked.
-
- @G - Group Delete block
- Sorta self explanatory. This function deletes the text in the
- marked block.
-
- @M - Move block
- Move the cursor to the desired location and press @M to move the
- marked block. In line mode, the text is moved to the line
- immediately below the cursor. In box and stream mode, the block
- is moved to the column of the cursor.
-
- @C - Copy block
- With line blocks, the block is copied to the line below the
- cursor. With box and stream blocks, the block is copied
- beginning at the column of the cursor. If you try to copy a
- Line block within itself, the block copy starts at the first
- line immediately after the marked block.
-
- @K - Kopy block
- Same as copy block except block stays marked. It's sorta like a
- poor man's cut-and-paste buffer.
-
- @O - Overlay block
- You can only overlay Box blocks. The original block stays marked
- after the operation.
-
- @F - Fill box block
- Fills the marked Box block with character. This function is
- useful for filling in a column of periods for tables and such.
-
- @N - Number box block
- TDE prompts you for the starting number, the increment, and
- whether to left or right justify the numbers. TDE only handles
- integers - no floating point numbers are allowed. I felt that
- there were too many things involved in real numbers, eg. number
- of significant places to left of decimal, to right of decimal,
- exponents, engineering form, scientific form, etc.... If you
- want real numbers, just use a combination of the number box
- and fill box functions. Use the fill box function to make a
- column of decimals and the number box function to number the left
- and right side of the decimal.
-
- @P - Print block
- Prints the block to the PRN device. I haven't tried redirecting
- the PRN, but it should work. This function prompts for block or
- file to print. Press Control-Break to stop printing.
-
- @S - Sort box block
- Lines are sorted, ascending or descending, using the contents of
- the box block as the sort keys. The Ignore/Match toggle
- determines whether case of the keys is significant. To sort
- multiple columns, sort the least significant column first. Press
- Control-Break to stop.
-
- #@S - Swap block
- Swap block only works with BOX blocks. The area to be swapped
- is assumed to be the width of the BOX block. Make sure the
- cursor is at the top left corner of the area to swap before
- swapping.
-
- @W - Write block to file
- Writes the marked block to a file. TDE prompts for the file
- name.
-
- @E - Block expand tabs
- Expands the tabs in the marked block, which must be a LINE block,
- using the current tab setting. Press Control-Break to stop.
-
- @T - Block trim trailing
- Trims trailing space, if any, at the end of each line in a LINE
- block. Press Control-Break to stop.
-
- @< - Block upper case
- Convert all lower case characters in the block to upper case.
- Our old IBM mainframe line printers can only print upper case.
-
- @> - Block lower case
- Convert all upper case characters in the block to lower case.
-
- @? - Block strip high bit
- Strip the high bit off all characters in the block. This function
- is useful when editing files produced by WordStar.
-
- #@< - BlockRot13
- Convert all alpha characters in a block using ROT13.
-
- #@> - BlockFixUUE
- Fixes the EBCDIC to ASCII problem with text e-mail.
-
- #@? - BlockEmailReply
- Prepends the customary "> " or ">" to e-mail replies to lines in a
- LINE block.
-
-
- Word Processing Commands:
-
- @V - toggle word wrap
- Toggle word wrap between off, Fixed Wrap, and Dynamic Wrap. In
- Fixed Wrap mode, the left margin is explicitly determined by the
- left margin setting. In Dynamic Wrap mode, the left margin is
- determined by the indentation of the current line. Writers may
- find the Dynamic Wrap mode easier to use. If the cursor is
- somewhere in the line, words are pushed to the next line.
-
- In TDE, other than margins, word wrap and format paragraph or
- format text have nothing to do with each other. Word wrap is
- used to push characters or the cursor to the next line when the
- right margin is violated. Format paragraph and format text can
- be used at any time - they do not depend on the state of the
- WordWrap flag.
-
- ^F6 - Set Left margin
- May be set to any column equal to or greater than 1 and less than
- the right margin.
-
- ^F7 - Set Right margin
- May be set to any column greater than the left margin and less
- than the maximum line length or 1040.
-
- ^F8 - Set Paragraph margin
- The paragraph margin may be set to any column less than the right
- margin.
-
- @F7 - format paragraph
- Text is formatted from the beginning of the paragraph according
- to the current left, right, and paragraph margins. If the cursor
- is not on the beginning line of a paragraph, TDE searches for
- start of the paragraph and formatting starts there. The entire
- paragraph is formatted according to the margins.
-
- ^B - Format Text
- Text is formatted from the cursor onward. This function does not
- search for the beginning of the paragraph to start the format.
-
- @F8 - Left justify
- Beginning of current line is adjusted to start at left margin
-
- @F9 - Right justify
- End of current line is adjusted so it ends at the right margin
-
- @F10 - Center justify
- Current line is centered between the left and right margins.
-
-
- Tabs:
-
- Tab
- If in insert mode, insert the appropriate number of spaces for a
- tab and move the cursor left. If in overwrite mode, just move
- the cursor left w/o inserting text.
-
- #Tab
- Move cursor to previous tab.
-
- ^Tab
- Set ptabs and ltabs.
-
- @Tab
- Toggle smart tab mode. Smart tab positions are determined by
- looking for the first, previous, non-blank line above the cursor
- and then positioning the cursor at the begining of the next or
- previous word from the column of the cursor. It's useful for
- building tables and formatted data files.
-
- #@T
- Toggle TabInflate mode. In TabInflate mode, tabs are not
- physically expanded. Tabs are filled with space to give the
- illusion of physical expansion.
-
-
- Toggles:
-
- ^F1
- Toggle cursor sync. Only cursor movement commands are synced.
- Commands that change text are not synced.
-
- ^F2
- Toggle eol display. A special character is displayed in the
- column of the actual new line.
-
- ^F3
- Toggle writing <CR><LF> or <LF> at end of line. TDE will read a
- text file with lines that end in either method; however, you may
- want to write the file in a different method. I think *nix
- systems only want a <LF> of the end of line.
-
- ^F4
- Toggle trimming trailing space at the end of line. A 'T' is
- displayed in the bottom right of the mode line to indicate
- trailing space is trimmed.
-
- ^F5 = Toggle search or sort case
- You can toggle the case flag at any time, even after you define
- the search pattern.
-
- Ins
- Toggle between insert and overwrite mode.
-
- @I
- Toggle between indent and no indent mode. In indent mode, TDE
- searches for the first non-blank character on previous lines and
- places the cursor on that column when a carriage return is
- pressed. When backspacing in indent mode, TDE lines up the
- indentation with the first non-blank character of the previous
- line(s).
-
- @R - Toggle ruler
- Toggle display of ruler in all visible windows.
-
- @V - toggle word wrap
- Toggle word wrap between Off, Fixed Wrap, and Dynamic Wrap.
-
- @Z
- Toggle writing Control Z at the end of file. Some programs may
- misbehave if a Control Z is not at the end of the file.
-
-
- Other keys:
-
- Enter
- Insert a newline at the cursor. If the cursor is in the middle of
- a line, the line is split at the cursor. Indentation is matched
- if the editor is in the Indent mode.
-
- #Enter
- Move the cursor down a line. The cursor is placed on the first
- non-blank character in the next line. No lines are added to the
- file.
-
- ^Enter
- Move the cursor down a line. The cursor is placed on column 1 in
- the next line. No lines are added to the file.
-
- Up (arrow)
- Move cursor up.
-
- Down (arrow)
- Move cursor down.
-
- Left (arrow)
- Move cursor left.
-
- Right (arrow)
- Move cursor right.
-
- Home
- Toggles between the first non-blank character and column zero.
-
- End
- Move cursor to the end of line character.
-
- Page Up
- Move cursor up one page.
-
- Page Down
- Move cursor down one page.
-
- ^Right
- Move cursor one word right.
-
- ^Left
- Move cursor one word left.
-
- ^#Right (Control+Shift+Right)
- Pan the screen one character to the right.
-
- ^#Left (Control+Shift+Left)
- Pan the screen one character to the left.
-
- ^Home
- Move cursor to first line on screen.
-
- ^End
- Move cursor to last line on screen.
-
- ^Page Up
- Move cursor to first page in file.
-
- ^Page Down
- Move cursor to last page in file.
-
- Zip to line
- Move to line number. TDE prompts for line number. Press Escape
- to abort.
-
- Center
- The cursor is moved to the center of the current window.
-
- ^Center
- The line the cursor is on is moved to the center of the current
- window.
-
- Grey - (on the key pad) or
- ^Down
- Scroll window up with cursor staying on same line in file.
-
- Grey + (on the key pad) or
- ^Up
- Scroll window down with cursor staying on same line in file.
-
- @Grey Up (the arrow in the cursor/control cluster) or
- ^Grey - (grey - on keypad)
- Cursor stays on same line of the screen as the file scrolls up.
-
- @Grey Down (the arrow in the cursor/control cluster) or
- ^Grey + (grey + on keypad)
- Cursor stays on same line of the screen as the file scrolls down.
-
- @Grey PgUp
- Horizontal page left.
-
- @Grey PgDn
- Horizontal page right.
-
- ESC - undo line
- Get back the original unchanged line. When cursor is moved off a
- line, all changes to the file are made and there is no way to get
- back the contents of a line.
-
- Del
- Delete the character, if any, under the cursor.
-
- ^Del
- Delete the characters in the file as if they were a stream.
- Lines will be joined at the cursor and eventually every
- character in the file may be deleted.
-
- Backspace
- Delete the character to the left of the cursor and move left. If
- the cursor is on the first column of a line, the current line is
- joined with the line above. If in indent mode and the cursor is
- on the first non-blank character, TDE matches the indentation of
- the previous line(s).
-
- @=
- Duplicates the current line.
-
- @-
- Deletes the text from the cursor to the end of line.
-
- ^Y
- Deletes current line, cursor does not move.
-
- @D
- Deletes current line, cursor does not move (exactly same as ^Y).
-
- @Y or ^U
- Undelete the most recently deleted line. The undelete buffer has
- room for 10k of deleted text. If more than 10k of text is
- deleted, the oldest line(s) are pushed out before the new one is
- added. You may press ^U repeatedly to undelete all lines in the
- buffer.
-
- Deleted lines from line delete, delete to end of line, word
- delete, join line, and backspace are stored in the undelete
- buffer.
-
- @A
- Add a blank line below cursor.
-
- ^_ or Control underline
- Split line at column of cursor. If in indent mode, the split line
- is autoindented.
-
- @J
- Join the current line with the line below.
-
- ^]
- Paren Balance.
-
- @1 - @3
- Set a file marker. Each file may have up to 3 markers.
-
- #@1 - #@3 (Shift+Alt+1 thru Shift+Alt+3)
- Goto a previously defined file marker.
-
-
- ^@ (Control+At sign -- not Control+Alt. Control+At sign is the first
- character in the ASCII character set, Control+2 on many keyboards)
- Writes the current system date and time at the column of the
- cursor. Use tdecfg to set the desired year and time format.
-
- Control-Break
- In TDE, Control-Break will stop printing, sorting,
- search/replacing, and recursive macros.
-
-
-
- WordStar style commands:
-
- A limited number of WordStar style commands are implemented in TDE. I
- have no plans, whatsoever, to implement any additional WordStar style
- commands. This implementation may not correspond exactly to the
- WordStar command convention. WordStar is a trademark of WordStar
- International.
-
- ^A - word left
- ^B - format text
- ^C - screen down
- ^D - character right
- ^E - line up
- ^F - word right
- ^G - delete character
- ^H - backspace
- ^I - tab
- ^J - help
- ^K - n/a
- ^L - n/a
- ^M - return (carriage control, enter)
- ^N - add line below cursor
- ^O - n/a
- ^P - n/a
- ^Q - n/a
- ^R - page up
- ^S - character left
- ^T - word delete
- ^U - undelete line
- ^V - toggle insert mode
- ^W - scroll up line
- ^X - line down
- ^Y - delete line
- ^Z - scroll line down
- ^\ - redraw screen
-
-
- Editor command summary:
-
- Function Description
-
- Help Display instantaneous help screen
- Rturn Insert newline and move down while matching indentation
- NextLine Move cursor to first character in next line
- BegNextLine Move cursor to first column in next line
- LineDown Move cursor down a line
- LineUp Move cursor up a line
- CharRight Move cursor right one character
- CharLeft Move cursor left one character
- PanRight Pan screen one character right
- PanLeft Pan screen one character left
- WordRight Move cursor to beginning of next word
- WordLeft Move cursor to beginning of previous word
- ScreenDown Page screen down
- ScreenUp Page screen up
- EndOfFile Move to the last page in a file
- TopOfFile Move to the first page in a file
- BotOfScreen Move cursor to bottom of current window
- TopOfScreen Move cursor to top of current window
- EndOfLine Move cursor to end of line
- BegOfLine Move cursor to first character in line or column 1
- JumpToLine Move cursor to line entered by user
- CenterWindow Move cursor to center of current window
- CenterLine Move current line and cursor to center of window
- HorizontalScreenRight Page screen right
- HorizontalScreenLeft Page screen left
- ScrollDnLine Scroll screen down 1 line and cursor moves with line
- ScrollUpLine Scroll screen up 1 line and cursor moves with line
- PanUp Scroll screen up 1 line and cursor does not move
- PanDn Scroll screen down 1 line and cursor does not move
- ToggleOverWrite Toggle insert/overwrite mode and cursor changes shape
- ToggleSmartTabs Toggle smart tab mode on/off
- ToggleIndent Toggle indent mode on/off
- ToggleWordWrap Toggle word wrap on/off
- ToggleCRLF Toggle CRLF/LF at eol when writing file to disk
- ToggleTrailing Toggle trim trailing space at eol
- ToggleZ Toggle writing ^Z at eof
- ToggleEol Toggle display of eol character
- ToggleSync Toggle cursor sync
- ToggleRuler Toggle ruler display
- ToggleTabInflate Toggle expanding tabs in display
- SetTabs Set file tabs
- SetLeftMargin Set left margin
- SetRightMargin Set right margin
- SetParagraphMargin Set paragraph margin
- FormatParagraph Format the entire paragraph according to margins
- FormatText Format from the cursor line to end of paragraph
- LeftJustify Left justify a line
- RightJustify Right justify a line
- CenterJustify Center justify a line
- Tab Move cursor to next tab and add spaces if insert mode
- BackTab Move cursor to previous tab and delete if insert mode
- ParenBalance Match (), {}, or [] under the cursor
- BackSpace Delete previous character
- DeleteChar Delete current character, but do not join lines
- StreamDeleteChar Delete current character and join lines if at eol
- DeleteLine Delete current line
- DelEndOfLine Delete from the cursor to the eol
- WordDelete Delete from the cursor to the end of word
- AddLine Insert a blank line under the cursor
- SplitLine Split the current line at the cursor
- JoinLine Join next line with current line at the cursor
- DuplicateLine Duplicate the current line
- AbortCommand Abort editor functions
- UndoLine Get back the original contents of a line
- UndoDelete Get back up to the last 10k of deleted text
- ToggleSearchCase Toggle match/ignore search case or sort case
- FindForward Prompt for pattern and search forward
- FindBackward Prompt for pattern and search backward
- RepeatFindForward1 Repeat find forward and adjust cursor if needed
- RepeatFindForward2 Repeat find forward and do not adjust cursor
- RepeatFindBackward1 Repeat find backward and adjust cursor if needed
- RepeatFindBackward2 Repeat find backward and do not adjust cursor
- ReplaceString Search and replace pattern forward/backward
- DefineDiff Define starting diff options
- RepeatDiff Find the next diff
- MarkBox Mark start or end of a box block
- MarkLine Mark start or end of a line block
- MarkStream Mark start or end of a stream block
- UnMarkBlock Unmark a block
- FillBlock Fill a box block with prompted character
- NumberBlock Fill a box block with starting number using increment
- CopyBlock Copy a block to cursor and unmark block
- KopyBlock Copy a block to cursor and leave block marked
- MoveBlock Move a block to cursor and unmark block
- OverlayBlock Overlay a box block
- DeleteBlock Delete a block
- SwapBlock Swap contents of BOX block w/ cursor
- BlockToFile Write a marked block to a file
- PrintBlock Print a block or file
- BlockExpandTabs Expand tabs in marked LINE block using tab setting
- BlockCompressTabs Compress space to tabs in LINE block
- BlockIndentTabs Compress leading space to tabs in LINE block
- BlockTrimTrailing Trim trailing space from all lines in a line block
- BlockUpperCase Convert all lower case in block to upper case
- BlockLowerCase Convert all upper case in block to lower case
- BlockRot13 Rotate alpha characters by 13
- BlockFixUUE Fix the ASCII-EBCDIC translation problem
- BlockEmailReply Prepend '>' to included mail blocks
- BlockStripHiBit Strip the high bit from all characters in block
- SortBoxBlock Sort line according to keys in box block
- DateTimeStamp Insert system time and date
- EditFile Editor prompts for file to edit
- DirList List matching files in subdirectories
- File Save file and quit window
- Save Save file
- SaveAs Save file under a new file name
- SetFileAttributes Set current file attributes
- EditNextFile Edit next file on command line
- DefineSearchAndSeize Initial pattern and search files
- RepeatSearchAndSeize Search and load next file that contains pattern
- RedrawScreen Redraw the screen
- SizeWindow Change size of current window
- SplitHorizontal Split current window horizontally
- SplitVertical Split current window vertically
- NextWindow Move to next window
- PreviousWindow Move to previous window
- ZoomWindow Make current window the maximum window size
- NextHiddenWindow Switch to next hidden window
- SetMark1 Set a file marker
- SetMark2
- SetMark3
- GotoMark1 Move cursor to previously defined marker
- GotoMark2
- GotoMark3
- RecordMacro Record keystrokes
- PlayBack Used in config file - play back keystrokes
- SaveMacro Save macro to a file
- LoadMacro Load macro from a file
- ClearAllMacros Clear the macro buffer
- Pause Pause a macro
- Quit Quit current window and file and abandon changes
-